{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Stock value prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "from pandas import datetime\n",
    "import math, time\n",
    "import itertools\n",
    "from sklearn import preprocessing\n",
    "import datetime\n",
    "from operator import itemgetter\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from math import sqrt\n",
    "from keras.models import Sequential\n",
    "from keras.layers.core import Dense, Dropout, Activation\n",
    "from keras.layers.recurrent import LSTM\n",
    "from keras.models import load_model\n",
    "import keras\n",
    "import pandas_datareader.data as web\n",
    "import h5py"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Download data and normalize it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def get_stock_data(stock_name, normalize=True):\n",
    "    start = datetime.datetime(2000, 1, 1)\n",
    "    end = datetime.date.today()\n",
    "    df = web.DataReader(stock_name, \"yahoo\", start, end)\n",
    "    df.drop(['Volume', 'Close'], 1, inplace=True)\n",
    "    \n",
    "    if normalize:        \n",
    "        min_max_scaler = preprocessing.MinMaxScaler()\n",
    "        df['Open'] = min_max_scaler.fit_transform(df.Open.values.reshape(-1,1))\n",
    "        df['High'] = min_max_scaler.fit_transform(df.High.values.reshape(-1,1))\n",
    "        df['Low'] = min_max_scaler.fit_transform(df.Low.values.reshape(-1,1))\n",
    "        df['Adj Close'] = min_max_scaler.fit_transform(df['Adj Close'].values.reshape(-1,1))\n",
    "    return df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Loading Google from yahoo finance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Adj Close</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-03</th>\n",
       "      <td>0.460498</td>\n",
       "      <td>0.458888</td>\n",
       "      <td>0.450320</td>\n",
       "      <td>0.452877</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-04</th>\n",
       "      <td>0.452319</td>\n",
       "      <td>0.445533</td>\n",
       "      <td>0.426432</td>\n",
       "      <td>0.420424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>0.419792</td>\n",
       "      <td>0.420939</td>\n",
       "      <td>0.414905</td>\n",
       "      <td>0.421989</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-06</th>\n",
       "      <td>0.421360</td>\n",
       "      <td>0.420136</td>\n",
       "      <td>0.423321</td>\n",
       "      <td>0.422768</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-07</th>\n",
       "      <td>0.422141</td>\n",
       "      <td>0.437472</td>\n",
       "      <td>0.428358</td>\n",
       "      <td>0.444880</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                Open      High       Low  Adj Close\n",
       "Date                                               \n",
       "2000-01-03  0.460498  0.458888  0.450320   0.452877\n",
       "2000-01-04  0.452319  0.445533  0.426432   0.420424\n",
       "2000-01-05  0.419792  0.420939  0.414905   0.421989\n",
       "2000-01-06  0.421360  0.420136  0.423321   0.422768\n",
       "2000-01-07  0.422141  0.437472  0.428358   0.444880"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_name = '^GSPC'\n",
    "df = get_stock_data(stock_name, normalize=True)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Saving the data to a file for a future use"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#today = datetime.date.today()\n",
    "#file_name = stock_name+'_stock_%s.csv' % today\n",
    "#df.to_csv(file_name)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Plot out the Normalized Adjusted close price"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x26057cf68d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(df['Adj Close'], color='red', label='Adj Close')\n",
    "plt.legend(loc='best')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Set last day Adjusted Close as y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def load_data(stock, seq_len):\n",
    "    amount_of_features = len(stock.columns)\n",
    "    data = stock.as_matrix() \n",
    "    sequence_length = seq_len + 1 # index starting from 0\n",
    "    result = []\n",
    "    \n",
    "    for index in range(len(data) - sequence_length): # maxmimum date = lastest date - sequence length\n",
    "        result.append(data[index: index + sequence_length]) # index : index + 22days\n",
    "    \n",
    "    result = np.array(result)\n",
    "    row = round(0.9 * result.shape[0]) # 90% split\n",
    "    train = result[:int(row), :] # 90% date, all features # (3893, 23, 4)\n",
    "    x_train = train[:, :-1] # x = all feature except adj close # (3893, 22, 4)\n",
    "    y_train = train[:, -1][:,-1] # y = last feature, last day (3893)\n",
    "    x_test = result[int(row):, :-1] #(432, 22, 4)\n",
    "    y_test = result[int(row):, -1][:,-1] #(432)\n",
    "\n",
    "    x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], amount_of_features))\n",
    "    x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], amount_of_features))  \n",
    "\n",
    "    return [x_train, y_train, x_test, y_test]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Buidling neural network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 4, 22, 1\n",
    "def build_model(layers):\n",
    "    model = Sequential()\n",
    "\n",
    "    model.add(LSTM(units=360, input_shape=(layers[1],layers[0]), return_sequences=True))\n",
    "    model.add(Dropout(0.2))\n",
    "\n",
    "    model.add(LSTM(units=120, input_shape=(layers[1], layers[0]), return_sequences=False))\n",
    "    model.add(Dropout(0.2))\n",
    "\n",
    "    #model.add(Dense(32,kernel_initializer=\"uniform\",activation='relu'))  \n",
    "    model.add(Dense(layers[2], activation='linear'))\n",
    "\n",
    "    start = time.time()\n",
    "    #adam = keras.optimizers.Adam(lr=1, decay=0.2)\n",
    "    model.compile(loss=\"mse\", optimizer=\"adam\",metrics=['accuracy'])\n",
    "    print(\"Compilation Time : \", time.time() - start)\n",
    "    return model\n",
    "\n",
    "def build_model2(layers):\n",
    "    d = 0.2\n",
    "    model = Sequential()\n",
    "    \n",
    "    model.add(LSTM(128, input_shape=(layers[1], layers[0]), return_sequences=True))\n",
    "    model.add(Dropout(d))\n",
    "        \n",
    "    model.add(LSTM(128, input_shape=(layers[1], layers[0]), return_sequences=False))\n",
    "    model.add(Dropout(d))\n",
    "        \n",
    "    model.add(Dense(32,kernel_initializer=\"uniform\",activation='relu'))        \n",
    "    model.add(Dense(1,kernel_initializer=\"uniform\",activation='linear'))\n",
    "    # model = load_model('my_LSTM_stock_model1000.h5')\n",
    "    # adam = keras.optimizers.Adam(decay=0.2)\n",
    "    start = time.time()\n",
    "    model.compile(loss='mse',optimizer='adam', metrics=['accuracy'])\n",
    "    print(\"Compilation Time : \", time.time() - start)\n",
    "    return model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Setting X and Y for training and testing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X_train (3893, 22, 4)\n",
      "y_train (3893,)\n",
      "X_test (433, 22, 4)\n",
      "y_test (433,)\n"
     ]
    }
   ],
   "source": [
    "window = 22\n",
    "X_train, y_train, X_test, y_test = load_data(df, window)\n",
    "print(\"X_train\", X_train.shape)\n",
    "print(\"y_train\", y_train.shape)\n",
    "print(\"X_test\", X_test.shape)\n",
    "print(\"y_test\", y_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Compile model\n",
    "amount of feature, day of data, output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Compilation Time :  0.029074668884277344\n"
     ]
    }
   ],
   "source": [
    "model = build_model2([4,window,1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Executing the model & RMS/RMSE results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 3503 samples, validate on 390 samples\n",
      "Epoch 1/300\n",
      "3503/3503 [==============================] - 1s - loss: 0.1063 - acc: 2.8547e-04 - val_loss: 0.3417 - val_acc: 0.0000e+00\n",
      "Epoch 2/300\n",
      "3503/3503 [==============================] - 0s - loss: 0.0271 - acc: 2.8547e-04 - val_loss: 0.0966 - val_acc: 0.0000e+00\n",
      "Epoch 3/300\n",
      "3503/3503 [==============================] - 0s - loss: 0.0135 - acc: 2.8547e-04 - val_loss: 0.2255 - val_acc: 0.0000e+00\n",
      "Epoch 4/300\n",
      "3503/3503 [==============================] - 0s - loss: 0.0132 - acc: 2.8547e-04 - val_loss: 0.1429 - val_acc: 0.0000e+00\n",
      "Epoch 5/300\n",
      "3503/3503 [==============================] - 0s - loss: 0.0092 - acc: 2.8547e-04 - val_loss: 0.1131 - val_acc: 0.0000e+00\n",
      "Epoch 6/300\n",
      "3503/3503 [==============================] - ETA: 0s - loss: 0.0052 - acc: 3.2552e-0 - 0s - loss: 0.0050 - acc: 2.8547e-04 - val_loss: 0.0664 - val_acc: 0.0000e+00\n",
      "Epoch 7/300\n",
      "3503/3503 [==============================] - 0s - loss: 0.0020 - acc: 2.8547e-04 - val_loss: 0.0335 - val_acc: 0.0000e+00\n",
      "Epoch 8/300\n",
      "3503/3503 [==============================] - 0s - loss: 0.0014 - acc: 2.8547e-04 - val_loss: 0.0162 - val_acc: 0.0000e+00\n",
      "Epoch 9/300\n",
      "3503/3503 [==============================] - 0s - loss: 0.0012 - acc: 2.8547e-04 - val_loss: 0.0157 - val_acc: 0.0000e+00\n",
      "Epoch 10/300\n",
      "3503/3503 [==============================] - 0s - loss: 8.9832e-04 - acc: 2.8547e-04 - val_loss: 0.0171 - val_acc: 0.0000e+00\n",
      "Epoch 11/300\n",
      "3503/3503 [==============================] - 0s - loss: 9.0166e-04 - acc: 2.8547e-04 - val_loss: 0.0148 - val_acc: 0.0000e+00\n",
      "Epoch 12/300\n",
      "3503/3503 [==============================] - 0s - loss: 8.3257e-04 - acc: 2.8547e-04 - val_loss: 0.0096 - val_acc: 0.0000e+00\n",
      "Epoch 13/300\n",
      "3503/3503 [==============================] - 0s - loss: 8.0014e-04 - acc: 2.8547e-04 - val_loss: 0.0068 - val_acc: 0.0000e+00\n",
      "Epoch 14/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.7521e-04 - acc: 2.8547e-04 - val_loss: 0.0061 - val_acc: 0.0000e+00\n",
      "Epoch 15/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.7743e-04 - acc: 2.8547e-04 - val_loss: 0.0053 - val_acc: 0.0000e+00\n",
      "Epoch 16/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.6975e-04 - acc: 2.8547e-04 - val_loss: 0.0050 - val_acc: 0.0000e+00\n",
      "Epoch 17/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.7499e-04 - acc: 2.8547e-04 - val_loss: 0.0048 - val_acc: 0.0000e+00\n",
      "Epoch 18/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.7200e-04 - acc: 2.8547e-04 - val_loss: 0.0050 - val_acc: 0.0000e+00\n",
      "Epoch 19/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.6224e-04 - acc: 2.8547e-04 - val_loss: 0.0044 - val_acc: 0.0000e+00\n",
      "Epoch 20/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.4589e-04 - acc: 2.8547e-04 - val_loss: 0.0037 - val_acc: 0.0000e+00\n",
      "Epoch 21/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.1530e-04 - acc: 2.8547e-04 - val_loss: 0.0029 - val_acc: 0.0000e+00\n",
      "Epoch 22/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.2246e-04 - acc: 2.8547e-04 - val_loss: 0.0025 - val_acc: 0.0000e+00\n",
      "Epoch 23/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.0782e-04 - acc: 2.8547e-04 - val_loss: 0.0029 - val_acc: 0.0000e+00\n",
      "Epoch 24/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.8877e-04 - acc: 2.8547e-04 - val_loss: 0.0025 - val_acc: 0.0000e+00\n",
      "Epoch 25/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.8997e-04 - acc: 2.8547e-04 - val_loss: 0.0028 - val_acc: 0.0000e+00\n",
      "Epoch 26/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.6593e-04 - acc: 2.8547e-04 - val_loss: 0.0022 - val_acc: 0.0000e+00\n",
      "Epoch 27/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.7781e-04 - acc: 2.8547e-04 - val_loss: 0.0021 - val_acc: 0.0000e+00\n",
      "Epoch 28/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.8217e-04 - acc: 2.8547e-04 - val_loss: 0.0020 - val_acc: 0.0000e+00\n",
      "Epoch 29/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.6890e-04 - acc: 2.8547e-04 - val_loss: 0.0017 - val_acc: 0.0000e+00\n",
      "Epoch 30/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.5929e-04 - acc: 2.8547e-04 - val_loss: 0.0022 - val_acc: 0.0000e+00\n",
      "Epoch 31/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.5486e-04 - acc: 2.8547e-04 - val_loss: 0.0011 - val_acc: 0.0000e+00\n",
      "Epoch 32/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.5084e-04 - acc: 2.8547e-04 - val_loss: 0.0022 - val_acc: 0.0000e+00\n",
      "Epoch 33/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.4985e-04 - acc: 2.8547e-04 - val_loss: 9.0723e-04 - val_acc: 0.0000e+00\n",
      "Epoch 34/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.4796e-04 - acc: 2.8547e-04 - val_loss: 0.0020 - val_acc: 0.0000e+00\n",
      "Epoch 35/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.7759e-04 - acc: 2.8547e-04 - val_loss: 6.2744e-04 - val_acc: 0.0000e+00\n",
      "Epoch 36/300\n",
      "3503/3503 [==============================] - 0s - loss: 7.4585e-04 - acc: 2.8547e-04 - val_loss: 0.0027 - val_acc: 0.0000e+00\n",
      "Epoch 37/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.6391e-04 - acc: 2.8547e-04 - val_loss: 7.3569e-04 - val_acc: 0.0000e+00\n",
      "Epoch 38/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.3142e-04 - acc: 2.8547e-04 - val_loss: 0.0017 - val_acc: 0.0000e+00\n",
      "Epoch 39/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.0009e-04 - acc: 2.8547e-04 - val_loss: 0.0014 - val_acc: 0.0000e+00\n",
      "Epoch 40/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.0940e-04 - acc: 2.8547e-04 - val_loss: 9.7467e-04 - val_acc: 0.0000e+00\n",
      "Epoch 41/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.1203e-04 - acc: 2.8547e-04 - val_loss: 8.1823e-04 - val_acc: 0.0000e+00\n",
      "Epoch 42/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.0604e-04 - acc: 2.8547e-04 - val_loss: 6.6368e-04 - val_acc: 0.0000e+00\n",
      "Epoch 43/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.5760e-04 - acc: 2.8547e-04 - val_loss: 4.3691e-04 - val_acc: 0.0000e+00\n",
      "Epoch 44/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.0424e-04 - acc: 2.8547e-04 - val_loss: 8.1832e-04 - val_acc: 0.0000e+00\n",
      "Epoch 45/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.9178e-04 - acc: 2.8547e-04 - val_loss: 9.3385e-04 - val_acc: 0.0000e+00\n",
      "Epoch 46/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.0228e-04 - acc: 2.8547e-04 - val_loss: 3.6931e-04 - val_acc: 0.0000e+00\n",
      "Epoch 47/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.8569e-04 - acc: 2.8547e-04 - val_loss: 4.5843e-04 - val_acc: 0.0000e+00\n",
      "Epoch 48/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.3781e-04 - acc: 2.8547e-04 - val_loss: 0.0011 - val_acc: 0.0000e+00\n",
      "Epoch 49/300\n",
      "3503/3503 [==============================] - 0s - loss: 6.0360e-04 - acc: 2.8547e-04 - val_loss: 7.6928e-04 - val_acc: 0.0000e+00\n",
      "Epoch 50/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.7163e-04 - acc: 2.8547e-04 - val_loss: 3.2881e-04 - val_acc: 0.0000e+00\n",
      "Epoch 51/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.5004e-04 - acc: 2.8547e-04 - val_loss: 3.2381e-04 - val_acc: 0.0000e+00\n",
      "Epoch 52/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.3119e-04 - acc: 2.8547e-04 - val_loss: 3.5749e-04 - val_acc: 0.0000e+00\n",
      "Epoch 53/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.3982e-04 - acc: 2.8547e-04 - val_loss: 3.6161e-04 - val_acc: 0.0000e+00\n",
      "Epoch 54/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.2173e-04 - acc: 2.8547e-04 - val_loss: 3.7797e-04 - val_acc: 0.0000e+00\n",
      "Epoch 55/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.6163e-04 - acc: 2.8547e-04 - val_loss: 5.9535e-04 - val_acc: 0.0000e+00\n",
      "Epoch 56/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.8046e-04 - acc: 2.8547e-04 - val_loss: 5.9097e-04 - val_acc: 0.0000e+00\n",
      "Epoch 57/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.5300e-04 - acc: 2.8547e-04 - val_loss: 5.3854e-04 - val_acc: 0.0000e+00\n",
      "Epoch 58/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.4620e-04 - acc: 2.8547e-04 - val_loss: 3.2107e-04 - val_acc: 0.0000e+00\n",
      "Epoch 59/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3503/3503 [==============================] - 0s - loss: 5.3568e-04 - acc: 2.8547e-04 - val_loss: 3.6522e-04 - val_acc: 0.0000e+00\n",
      "Epoch 60/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.5991e-04 - acc: 2.8547e-04 - val_loss: 3.1734e-04 - val_acc: 0.0000e+00\n",
      "Epoch 61/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.1617e-04 - acc: 2.8547e-04 - val_loss: 3.9557e-04 - val_acc: 0.0000e+00\n",
      "Epoch 62/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.1612e-04 - acc: 2.8547e-04 - val_loss: 3.1015e-04 - val_acc: 0.0000e+00\n",
      "Epoch 63/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.0339e-04 - acc: 2.8547e-04 - val_loss: 3.6115e-04 - val_acc: 0.0000e+00\n",
      "Epoch 64/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.3499e-04 - acc: 2.8547e-04 - val_loss: 3.1006e-04 - val_acc: 0.0000e+00\n",
      "Epoch 65/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.1257e-04 - acc: 2.8547e-04 - val_loss: 3.0109e-04 - val_acc: 0.0000e+00\n",
      "Epoch 66/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.9342e-04 - acc: 2.8547e-04 - val_loss: 4.6460e-04 - val_acc: 0.0000e+00\n",
      "Epoch 67/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.0226e-04 - acc: 2.8547e-04 - val_loss: 7.2355e-04 - val_acc: 0.0000e+00\n",
      "Epoch 68/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.1100e-04 - acc: 2.8547e-04 - val_loss: 3.1433e-04 - val_acc: 0.0000e+00\n",
      "Epoch 69/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.3987e-04 - acc: 2.8547e-04 - val_loss: 8.9207e-04 - val_acc: 0.0000e+00\n",
      "Epoch 70/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.1622e-04 - acc: 2.8547e-04 - val_loss: 4.0805e-04 - val_acc: 0.0000e+00\n",
      "Epoch 71/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.1558e-04 - acc: 2.8547e-04 - val_loss: 3.9811e-04 - val_acc: 0.0000e+00\n",
      "Epoch 72/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.8228e-04 - acc: 2.8547e-04 - val_loss: 3.0099e-04 - val_acc: 0.0000e+00\n",
      "Epoch 73/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.1141e-04 - acc: 2.8547e-04 - val_loss: 3.0508e-04 - val_acc: 0.0000e+00\n",
      "Epoch 74/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.0890e-04 - acc: 2.8547e-04 - val_loss: 3.0424e-04 - val_acc: 0.0000e+00\n",
      "Epoch 75/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.9143e-04 - acc: 2.8547e-04 - val_loss: 5.0614e-04 - val_acc: 0.0000e+00\n",
      "Epoch 76/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.7632e-04 - acc: 2.8547e-04 - val_loss: 6.4391e-04 - val_acc: 0.0000e+00\n",
      "Epoch 77/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.7179e-04 - acc: 2.8547e-04 - val_loss: 4.8059e-04 - val_acc: 0.0000e+00\n",
      "Epoch 78/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.0495e-04 - acc: 2.8547e-04 - val_loss: 3.3458e-04 - val_acc: 0.0000e+00\n",
      "Epoch 79/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.9243e-04 - acc: 2.8547e-04 - val_loss: 3.0272e-04 - val_acc: 0.0000e+00\n",
      "Epoch 80/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.7994e-04 - acc: 2.8547e-04 - val_loss: 5.9166e-04 - val_acc: 0.0000e+00\n",
      "Epoch 81/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.9080e-04 - acc: 2.8547e-04 - val_loss: 3.7006e-04 - val_acc: 0.0000e+00\n",
      "Epoch 82/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.8043e-04 - acc: 2.8547e-04 - val_loss: 5.4953e-04 - val_acc: 0.0000e+00\n",
      "Epoch 83/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.7633e-04 - acc: 2.8547e-04 - val_loss: 3.1263e-04 - val_acc: 0.0000e+00\n",
      "Epoch 84/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.8367e-04 - acc: 2.8547e-04 - val_loss: 2.9463e-04 - val_acc: 0.0000e+00\n",
      "Epoch 85/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.6668e-04 - acc: 2.8547e-04 - val_loss: 4.4583e-04 - val_acc: 0.0000e+00\n",
      "Epoch 86/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.7961e-04 - acc: 2.8547e-04 - val_loss: 9.0935e-04 - val_acc: 0.0000e+00\n",
      "Epoch 87/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.2343e-04 - acc: 2.8547e-04 - val_loss: 2.9006e-04 - val_acc: 0.0000e+00\n",
      "Epoch 88/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.9341e-04 - acc: 2.8547e-04 - val_loss: 5.1034e-04 - val_acc: 0.0000e+00\n",
      "Epoch 89/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.9509e-04 - acc: 2.8547e-04 - val_loss: 2.8592e-04 - val_acc: 0.0000e+00\n",
      "Epoch 90/300\n",
      "3503/3503 [==============================] - 0s - loss: 5.1080e-04 - acc: 2.8547e-04 - val_loss: 3.4831e-04 - val_acc: 0.0000e+00\n",
      "Epoch 91/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.8083e-04 - acc: 2.8547e-04 - val_loss: 2.7097e-04 - val_acc: 0.0000e+00\n",
      "Epoch 92/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.8653e-04 - acc: 2.8547e-04 - val_loss: 2.9185e-04 - val_acc: 0.0000e+00\n",
      "Epoch 93/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.6851e-04 - acc: 2.8547e-04 - val_loss: 4.5483e-04 - val_acc: 0.0000e+00\n",
      "Epoch 94/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.5649e-04 - acc: 2.8547e-04 - val_loss: 4.7725e-04 - val_acc: 0.0000e+00\n",
      "Epoch 95/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.5119e-04 - acc: 2.8547e-04 - val_loss: 2.9454e-04 - val_acc: 0.0000e+00\n",
      "Epoch 96/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.6647e-04 - acc: 2.8547e-04 - val_loss: 3.4853e-04 - val_acc: 0.0000e+00\n",
      "Epoch 97/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.5840e-04 - acc: 2.8547e-04 - val_loss: 4.6718e-04 - val_acc: 0.0000e+00\n",
      "Epoch 98/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.9229e-04 - acc: 2.8547e-04 - val_loss: 2.8119e-04 - val_acc: 0.0000e+00\n",
      "Epoch 99/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.6105e-04 - acc: 2.8547e-04 - val_loss: 2.7246e-04 - val_acc: 0.0000e+00\n",
      "Epoch 100/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.2636e-04 - acc: 2.8547e-04 - val_loss: 3.7870e-04 - val_acc: 0.0000e+00\n",
      "Epoch 101/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.7315e-04 - acc: 2.8547e-04 - val_loss: 2.6093e-04 - val_acc: 0.0000e+00\n",
      "Epoch 102/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.4777e-04 - acc: 2.8547e-04 - val_loss: 2.6479e-04 - val_acc: 0.0000e+00\n",
      "Epoch 103/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.4240e-04 - acc: 2.8547e-04 - val_loss: 3.3094e-04 - val_acc: 0.0000e+00\n",
      "Epoch 104/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.3996e-04 - acc: 2.8547e-04 - val_loss: 2.8806e-04 - val_acc: 0.0000e+00\n",
      "Epoch 105/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.4522e-04 - acc: 2.8547e-04 - val_loss: 4.7995e-04 - val_acc: 0.0000e+00\n",
      "Epoch 106/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.3468e-04 - acc: 2.8547e-04 - val_loss: 2.5439e-04 - val_acc: 0.0000e+00\n",
      "Epoch 107/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.4773e-04 - acc: 2.8547e-04 - val_loss: 3.7272e-04 - val_acc: 0.0000e+00\n",
      "Epoch 108/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.6042e-04 - acc: 2.8547e-04 - val_loss: 2.4706e-04 - val_acc: 0.0000e+00\n",
      "Epoch 109/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.2806e-04 - acc: 2.8547e-04 - val_loss: 2.4566e-04 - val_acc: 0.0000e+00\n",
      "Epoch 110/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.2704e-04 - acc: 2.8547e-04 - val_loss: 2.6207e-04 - val_acc: 0.0000e+00\n",
      "Epoch 111/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.3331e-04 - acc: 2.8547e-04 - val_loss: 2.4262e-04 - val_acc: 0.0000e+00\n",
      "Epoch 112/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.3089e-04 - acc: 2.8547e-04 - val_loss: 2.5350e-04 - val_acc: 0.0000e+00\n",
      "Epoch 113/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.2262e-04 - acc: 2.8547e-04 - val_loss: 2.4767e-04 - val_acc: 0.0000e+00\n",
      "Epoch 114/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.5033e-04 - acc: 2.8547e-04 - val_loss: 3.3053e-04 - val_acc: 0.0000e+00\n",
      "Epoch 115/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.3729e-04 - acc: 2.8547e-04 - val_loss: 2.4169e-04 - val_acc: 0.0000e+00\n",
      "Epoch 116/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3503/3503 [==============================] - 0s - loss: 4.3620e-04 - acc: 2.8547e-04 - val_loss: 3.5923e-04 - val_acc: 0.0000e+00\n",
      "Epoch 117/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.3679e-04 - acc: 2.8547e-04 - val_loss: 2.3922e-04 - val_acc: 0.0000e+00\n",
      "Epoch 118/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.3562e-04 - acc: 2.8547e-04 - val_loss: 5.3297e-04 - val_acc: 0.0000e+00\n",
      "Epoch 119/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.5447e-04 - acc: 2.8547e-04 - val_loss: 2.6241e-04 - val_acc: 0.0000e+00\n",
      "Epoch 120/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.4328e-04 - acc: 2.8547e-04 - val_loss: 2.4091e-04 - val_acc: 0.0000e+00\n",
      "Epoch 121/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.1267e-04 - acc: 2.8547e-04 - val_loss: 4.5189e-04 - val_acc: 0.0000e+00\n",
      "Epoch 122/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.4299e-04 - acc: 2.8547e-04 - val_loss: 2.2952e-04 - val_acc: 0.0000e+00\n",
      "Epoch 123/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.6321e-04 - acc: 2.8547e-04 - val_loss: 4.2587e-04 - val_acc: 0.0000e+00\n",
      "Epoch 124/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.6882e-04 - acc: 2.8547e-04 - val_loss: 2.2649e-04 - val_acc: 0.0000e+00\n",
      "Epoch 125/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.2506e-04 - acc: 2.8547e-04 - val_loss: 2.7813e-04 - val_acc: 0.0000e+00\n",
      "Epoch 126/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.1326e-04 - acc: 2.8547e-04 - val_loss: 2.2510e-04 - val_acc: 0.0000e+00\n",
      "Epoch 127/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.2401e-04 - acc: 2.8547e-04 - val_loss: 2.2399e-04 - val_acc: 0.0000e+00\n",
      "Epoch 128/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8983e-04 - acc: 2.8547e-04 - val_loss: 2.4341e-04 - val_acc: 0.0000e+00\n",
      "Epoch 129/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.9282e-04 - acc: 2.8547e-04 - val_loss: 2.2131e-04 - val_acc: 0.0000e+00\n",
      "Epoch 130/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.2431e-04 - acc: 2.8547e-04 - val_loss: 3.7383e-04 - val_acc: 0.0000e+00\n",
      "Epoch 131/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.1758e-04 - acc: 2.8547e-04 - val_loss: 4.4550e-04 - val_acc: 0.0000e+00\n",
      "Epoch 132/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.2862e-04 - acc: 2.8547e-04 - val_loss: 3.5634e-04 - val_acc: 0.0000e+00\n",
      "Epoch 133/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.2487e-04 - acc: 2.8547e-04 - val_loss: 2.5490e-04 - val_acc: 0.0000e+00\n",
      "Epoch 134/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.0590e-04 - acc: 2.8547e-04 - val_loss: 2.1159e-04 - val_acc: 0.0000e+00\n",
      "Epoch 135/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.9486e-04 - acc: 2.8547e-04 - val_loss: 3.0222e-04 - val_acc: 0.0000e+00\n",
      "Epoch 136/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.9963e-04 - acc: 2.8547e-04 - val_loss: 2.2312e-04 - val_acc: 0.0000e+00\n",
      "Epoch 137/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.3145e-04 - acc: 2.8547e-04 - val_loss: 3.6384e-04 - val_acc: 0.0000e+00\n",
      "Epoch 138/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.4217e-04 - acc: 2.8547e-04 - val_loss: 5.4066e-04 - val_acc: 0.0000e+00\n",
      "Epoch 139/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.2691e-04 - acc: 2.8547e-04 - val_loss: 2.0605e-04 - val_acc: 0.0000e+00\n",
      "Epoch 140/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.0316e-04 - acc: 2.8547e-04 - val_loss: 3.9807e-04 - val_acc: 0.0000e+00\n",
      "Epoch 141/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.0195e-04 - acc: 2.8547e-04 - val_loss: 2.0371e-04 - val_acc: 0.0000e+00\n",
      "Epoch 142/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.0196e-04 - acc: 2.8547e-04 - val_loss: 2.7148e-04 - val_acc: 0.0000e+00\n",
      "Epoch 143/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.9335e-04 - acc: 2.8547e-04 - val_loss: 3.4703e-04 - val_acc: 0.0000e+00\n",
      "Epoch 144/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.9699e-04 - acc: 2.8547e-04 - val_loss: 1.9880e-04 - val_acc: 0.0000e+00\n",
      "Epoch 145/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8690e-04 - acc: 2.8547e-04 - val_loss: 2.1462e-04 - val_acc: 0.0000e+00\n",
      "Epoch 146/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.0147e-04 - acc: 2.8547e-04 - val_loss: 1.9973e-04 - val_acc: 0.0000e+00\n",
      "Epoch 147/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.0424e-04 - acc: 2.8547e-04 - val_loss: 2.0565e-04 - val_acc: 0.0000e+00\n",
      "Epoch 148/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8825e-04 - acc: 2.8547e-04 - val_loss: 2.0244e-04 - val_acc: 0.0000e+00\n",
      "Epoch 149/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8462e-04 - acc: 2.8547e-04 - val_loss: 2.5087e-04 - val_acc: 0.0000e+00\n",
      "Epoch 150/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8146e-04 - acc: 2.8547e-04 - val_loss: 2.0078e-04 - val_acc: 0.0000e+00\n",
      "Epoch 151/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.7704e-04 - acc: 2.8547e-04 - val_loss: 1.9078e-04 - val_acc: 0.0000e+00\n",
      "Epoch 152/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.9728e-04 - acc: 2.8547e-04 - val_loss: 3.8976e-04 - val_acc: 0.0000e+00\n",
      "Epoch 153/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.1044e-04 - acc: 2.8547e-04 - val_loss: 1.9514e-04 - val_acc: 0.0000e+00\n",
      "Epoch 154/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8759e-04 - acc: 2.8547e-04 - val_loss: 3.8417e-04 - val_acc: 0.0000e+00\n",
      "Epoch 155/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.6765e-04 - acc: 2.8547e-04 - val_loss: 2.0466e-04 - val_acc: 0.0000e+000\n",
      "Epoch 156/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.7341e-04 - acc: 2.8547e-04 - val_loss: 2.0470e-04 - val_acc: 0.0000e+00\n",
      "Epoch 157/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.9751e-04 - acc: 2.8547e-04 - val_loss: 3.7207e-04 - val_acc: 0.0000e+00\n",
      "Epoch 158/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8050e-04 - acc: 2.8547e-04 - val_loss: 2.1710e-04 - val_acc: 0.0000e+00\n",
      "Epoch 159/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.9428e-04 - acc: 2.8547e-04 - val_loss: 1.8836e-04 - val_acc: 0.0000e+00\n",
      "Epoch 160/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.0282e-04 - acc: 2.8547e-04 - val_loss: 5.8475e-04 - val_acc: 0.0000e+00\n",
      "Epoch 161/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.0082e-04 - acc: 2.8547e-04 - val_loss: 2.1320e-04 - val_acc: 0.0000e+00\n",
      "Epoch 162/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.9789e-04 - acc: 2.8547e-04 - val_loss: 2.1059e-04 - val_acc: 0.0000e+00\n",
      "Epoch 163/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8104e-04 - acc: 2.8547e-04 - val_loss: 2.1325e-04 - val_acc: 0.0000e+00\n",
      "Epoch 164/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.6030e-04 - acc: 2.8547e-04 - val_loss: 1.8260e-04 - val_acc: 0.0000e+00\n",
      "Epoch 165/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.7465e-04 - acc: 2.8547e-04 - val_loss: 1.8115e-04 - val_acc: 0.0000e+00\n",
      "Epoch 166/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.7316e-04 - acc: 2.8547e-04 - val_loss: 2.6753e-04 - val_acc: 0.0000e+00\n",
      "Epoch 167/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.7236e-04 - acc: 2.8547e-04 - val_loss: 2.3111e-04 - val_acc: 0.0000e+00\n",
      "Epoch 168/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8333e-04 - acc: 2.8547e-04 - val_loss: 3.0059e-04 - val_acc: 0.0000e+00\n",
      "Epoch 169/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.7699e-04 - acc: 2.8547e-04 - val_loss: 3.9956e-04 - val_acc: 0.0000e+00\n",
      "Epoch 170/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8975e-04 - acc: 2.8547e-04 - val_loss: 4.9918e-04 - val_acc: 0.0000e+00\n",
      "Epoch 171/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.6818e-04 - acc: 2.8547e-04 - val_loss: 1.8115e-04 - val_acc: 0.0000e+00\n",
      "Epoch 172/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3503/3503 [==============================] - 0s - loss: 3.5527e-04 - acc: 2.8547e-04 - val_loss: 1.8214e-04 - val_acc: 0.0000e+00\n",
      "Epoch 173/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.4020e-04 - acc: 2.8547e-04 - val_loss: 1.7621e-04 - val_acc: 0.0000e+00\n",
      "Epoch 174/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.7518e-04 - acc: 2.8547e-04 - val_loss: 2.1282e-04 - val_acc: 0.0000e+00\n",
      "Epoch 175/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.0309e-04 - acc: 2.8547e-04 - val_loss: 2.0048e-04 - val_acc: 0.0000e+00\n",
      "Epoch 176/300\n",
      "3503/3503 [==============================] - 0s - loss: 4.0253e-04 - acc: 2.8547e-04 - val_loss: 2.5620e-04 - val_acc: 0.0000e+00\n",
      "Epoch 177/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.7034e-04 - acc: 2.8547e-04 - val_loss: 1.7619e-04 - val_acc: 0.0000e+00\n",
      "Epoch 178/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.5164e-04 - acc: 2.8547e-04 - val_loss: 1.7578e-04 - val_acc: 0.0000e+00\n",
      "Epoch 179/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.5120e-04 - acc: 2.8547e-04 - val_loss: 1.7400e-04 - val_acc: 0.0000e+00\n",
      "Epoch 180/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.5222e-04 - acc: 2.8547e-04 - val_loss: 1.7788e-04 - val_acc: 0.0000e+00\n",
      "Epoch 181/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.4763e-04 - acc: 2.8547e-04 - val_loss: 2.0088e-04 - val_acc: 0.0000e+00\n",
      "Epoch 182/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.4384e-04 - acc: 2.8547e-04 - val_loss: 1.7415e-04 - val_acc: 0.0000e+00\n",
      "Epoch 183/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.5059e-04 - acc: 2.8547e-04 - val_loss: 1.9721e-04 - val_acc: 0.0000e+00\n",
      "Epoch 184/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.7175e-04 - acc: 2.8547e-04 - val_loss: 2.5708e-04 - val_acc: 0.0000e+00\n",
      "Epoch 185/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.6818e-04 - acc: 2.8547e-04 - val_loss: 2.3133e-04 - val_acc: 0.0000e+00\n",
      "Epoch 186/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.6342e-04 - acc: 2.8547e-04 - val_loss: 1.7937e-04 - val_acc: 0.0000e+00\n",
      "Epoch 187/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.5411e-04 - acc: 2.8547e-04 - val_loss: 2.0684e-04 - val_acc: 0.0000e+00\n",
      "Epoch 188/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.4814e-04 - acc: 2.8547e-04 - val_loss: 1.8100e-04 - val_acc: 0.0000e+00\n",
      "Epoch 189/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.7541e-04 - acc: 2.8547e-04 - val_loss: 1.6885e-04 - val_acc: 0.0000e+00\n",
      "Epoch 190/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.6971e-04 - acc: 2.8547e-04 - val_loss: 1.6837e-04 - val_acc: 0.0000e+00\n",
      "Epoch 191/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.8479e-04 - acc: 2.8547e-04 - val_loss: 3.9569e-04 - val_acc: 0.0000e+00\n",
      "Epoch 192/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.4720e-04 - acc: 2.8547e-04 - val_loss: 1.7693e-04 - val_acc: 0.0000e+00\n",
      "Epoch 193/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.4311e-04 - acc: 2.8547e-04 - val_loss: 2.6007e-04 - val_acc: 0.0000e+00\n",
      "Epoch 194/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.4521e-04 - acc: 2.8547e-04 - val_loss: 2.4472e-04 - val_acc: 0.0000e+00\n",
      "Epoch 195/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.4913e-04 - acc: 2.8547e-04 - val_loss: 1.8440e-04 - val_acc: 0.0000e+00\n",
      "Epoch 196/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.6239e-04 - acc: 2.8547e-04 - val_loss: 1.7051e-04 - val_acc: 0.0000e+00\n",
      "Epoch 197/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.5433e-04 - acc: 2.8547e-04 - val_loss: 1.6905e-04 - val_acc: 0.0000e+00\n",
      "Epoch 198/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2784e-04 - acc: 2.8547e-04 - val_loss: 2.4745e-04 - val_acc: 0.0000e+00\n",
      "Epoch 199/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.3660e-04 - acc: 2.8547e-04 - val_loss: 1.9864e-04 - val_acc: 0.0000e+00\n",
      "Epoch 200/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.5096e-04 - acc: 2.8547e-04 - val_loss: 2.0084e-04 - val_acc: 0.0000e+00\n",
      "Epoch 201/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.1477e-04 - acc: 2.8547e-04 - val_loss: 1.6764e-04 - val_acc: 0.0000e+00\n",
      "Epoch 202/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2246e-04 - acc: 2.8547e-04 - val_loss: 1.8978e-04 - val_acc: 0.0000e+00\n",
      "Epoch 203/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2441e-04 - acc: 2.8547e-04 - val_loss: 2.4586e-04 - val_acc: 0.0000e+00\n",
      "Epoch 204/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.3486e-04 - acc: 2.8547e-04 - val_loss: 1.6183e-04 - val_acc: 0.0000e+00\n",
      "Epoch 205/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2412e-04 - acc: 2.8547e-04 - val_loss: 1.6176e-04 - val_acc: 0.0000e+00\n",
      "Epoch 206/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2595e-04 - acc: 2.8547e-04 - val_loss: 1.5965e-04 - val_acc: 0.0000e+00\n",
      "Epoch 207/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2105e-04 - acc: 2.8547e-04 - val_loss: 3.6835e-04 - val_acc: 0.0000e+00\n",
      "Epoch 208/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2204e-04 - acc: 2.8547e-04 - val_loss: 2.4040e-04 - val_acc: 0.0000e+00\n",
      "Epoch 209/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2262e-04 - acc: 2.8547e-04 - val_loss: 3.2031e-04 - val_acc: 0.0000e+00\n",
      "Epoch 210/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2495e-04 - acc: 2.8547e-04 - val_loss: 2.4026e-04 - val_acc: 0.0000e+00\n",
      "Epoch 211/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.1569e-04 - acc: 2.8547e-04 - val_loss: 1.6416e-04 - val_acc: 0.0000e+00\n",
      "Epoch 212/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.3261e-04 - acc: 2.8547e-04 - val_loss: 1.6318e-04 - val_acc: 0.0000e+00\n",
      "Epoch 213/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2618e-04 - acc: 2.8547e-04 - val_loss: 2.2479e-04 - val_acc: 0.0000e+00\n",
      "Epoch 214/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.1116e-04 - acc: 2.8547e-04 - val_loss: 1.6623e-04 - val_acc: 0.0000e+00\n",
      "Epoch 215/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.1621e-04 - acc: 2.8547e-04 - val_loss: 1.8280e-04 - val_acc: 0.0000e+00\n",
      "Epoch 216/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.1037e-04 - acc: 2.8547e-04 - val_loss: 1.6485e-04 - val_acc: 0.0000e+00\n",
      "Epoch 217/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.0984e-04 - acc: 2.8547e-04 - val_loss: 1.6101e-04 - val_acc: 0.0000e+00\n",
      "Epoch 218/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.0583e-04 - acc: 2.8547e-04 - val_loss: 2.0456e-04 - val_acc: 0.0000e+00\n",
      "Epoch 219/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.0855e-04 - acc: 2.8547e-04 - val_loss: 2.7505e-04 - val_acc: 0.0000e+00\n",
      "Epoch 220/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2093e-04 - acc: 2.8547e-04 - val_loss: 1.7242e-04 - val_acc: 0.0000e+00\n",
      "Epoch 221/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.9840e-04 - acc: 2.8547e-04 - val_loss: 1.7123e-04 - val_acc: 0.0000e+00\n",
      "Epoch 222/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.0911e-04 - acc: 2.8547e-04 - val_loss: 1.5174e-04 - val_acc: 0.0000e+00\n",
      "Epoch 223/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.0442e-04 - acc: 2.8547e-04 - val_loss: 1.6724e-04 - val_acc: 0.0000e+00\n",
      "Epoch 224/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.9805e-04 - acc: 2.8547e-04 - val_loss: 3.8939e-04 - val_acc: 0.0000e+00\n",
      "Epoch 225/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.0731e-04 - acc: 2.8547e-04 - val_loss: 2.0869e-04 - val_acc: 0.0000e+00\n",
      "Epoch 226/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.2247e-04 - acc: 2.8547e-04 - val_loss: 1.5068e-04 - val_acc: 0.0000e+00\n",
      "Epoch 227/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.9679e-04 - acc: 2.8547e-04 - val_loss: 2.2407e-04 - val_acc: 0.0000e+00\n",
      "Epoch 228/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3503/3503 [==============================] - 0s - loss: 2.9086e-04 - acc: 2.8547e-04 - val_loss: 1.8242e-04 - val_acc: 0.0000e+00\n",
      "Epoch 229/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.0754e-04 - acc: 2.8547e-04 - val_loss: 1.6409e-04 - val_acc: 0.0000e+00\n",
      "Epoch 230/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.0845e-04 - acc: 2.8547e-04 - val_loss: 1.7709e-04 - val_acc: 0.0000e+00\n",
      "Epoch 231/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.9988e-04 - acc: 2.8547e-04 - val_loss: 2.5554e-04 - val_acc: 0.0000e+00\n",
      "Epoch 232/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.9273e-04 - acc: 2.8547e-04 - val_loss: 1.6786e-04 - val_acc: 0.0000e+00\n",
      "Epoch 233/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.9139e-04 - acc: 2.8547e-04 - val_loss: 1.6437e-04 - val_acc: 0.0000e+00\n",
      "Epoch 234/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8904e-04 - acc: 2.8547e-04 - val_loss: 2.4910e-04 - val_acc: 0.0000e+00\n",
      "Epoch 235/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8393e-04 - acc: 2.8547e-04 - val_loss: 1.5045e-04 - val_acc: 0.0000e+00\n",
      "Epoch 236/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8027e-04 - acc: 2.8547e-04 - val_loss: 1.5007e-04 - val_acc: 0.0000e+00\n",
      "Epoch 237/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8999e-04 - acc: 2.8547e-04 - val_loss: 2.0831e-04 - val_acc: 0.0000e+00\n",
      "Epoch 238/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.7816e-04 - acc: 2.8547e-04 - val_loss: 1.7801e-04 - val_acc: 0.0000e+00\n",
      "Epoch 239/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.9734e-04 - acc: 2.8547e-04 - val_loss: 1.5620e-04 - val_acc: 0.0000e+00\n",
      "Epoch 240/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.9029e-04 - acc: 2.8547e-04 - val_loss: 1.4070e-04 - val_acc: 0.0000e+00\n",
      "Epoch 241/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8246e-04 - acc: 2.8547e-04 - val_loss: 1.5195e-04 - val_acc: 0.0000e+00\n",
      "Epoch 242/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.7379e-04 - acc: 2.8547e-04 - val_loss: 1.5519e-04 - val_acc: 0.0000e+00\n",
      "Epoch 243/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8313e-04 - acc: 2.8547e-04 - val_loss: 1.8051e-04 - val_acc: 0.0000e+00\n",
      "Epoch 244/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8706e-04 - acc: 2.8547e-04 - val_loss: 1.4349e-04 - val_acc: 0.0000e+00\n",
      "Epoch 245/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.9765e-04 - acc: 2.8547e-04 - val_loss: 3.0192e-04 - val_acc: 0.0000e+00\n",
      "Epoch 246/300\n",
      "3503/3503 [==============================] - 0s - loss: 3.0218e-04 - acc: 2.8547e-04 - val_loss: 2.1842e-04 - val_acc: 0.0000e+00\n",
      "Epoch 247/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8431e-04 - acc: 2.8547e-04 - val_loss: 2.4533e-04 - val_acc: 0.0000e+0052e-0\n",
      "Epoch 248/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8562e-04 - acc: 2.8547e-04 - val_loss: 1.6357e-04 - val_acc: 0.0000e+00\n",
      "Epoch 249/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.7180e-04 - acc: 2.8547e-04 - val_loss: 1.3951e-04 - val_acc: 0.0000e+00\n",
      "Epoch 250/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.7520e-04 - acc: 2.8547e-04 - val_loss: 1.4201e-04 - val_acc: 0.0000e+00\n",
      "Epoch 251/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6876e-04 - acc: 2.8547e-04 - val_loss: 1.3332e-04 - val_acc: 0.0000e+00\n",
      "Epoch 252/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.7292e-04 - acc: 2.8547e-04 - val_loss: 1.4040e-04 - val_acc: 0.0000e+00\n",
      "Epoch 253/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.7372e-04 - acc: 2.8547e-04 - val_loss: 2.0066e-04 - val_acc: 0.0000e+00\n",
      "Epoch 254/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6861e-04 - acc: 2.8547e-04 - val_loss: 1.5684e-04 - val_acc: 0.0000e+00\n",
      "Epoch 255/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6298e-04 - acc: 2.8547e-04 - val_loss: 1.6033e-04 - val_acc: 0.0000e+00\n",
      "Epoch 256/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.7995e-04 - acc: 2.8547e-04 - val_loss: 3.3052e-04 - val_acc: 0.0000e+00\n",
      "Epoch 257/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8176e-04 - acc: 2.8547e-04 - val_loss: 1.6068e-04 - val_acc: 0.0000e+00\n",
      "Epoch 258/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6430e-04 - acc: 2.8547e-04 - val_loss: 1.5472e-04 - val_acc: 0.0000e+00\n",
      "Epoch 259/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.7105e-04 - acc: 2.8547e-04 - val_loss: 2.6254e-04 - val_acc: 0.0000e+00\n",
      "Epoch 260/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.8236e-04 - acc: 2.8547e-04 - val_loss: 1.6417e-04 - val_acc: 0.0000e+00\n",
      "Epoch 261/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6778e-04 - acc: 2.8547e-04 - val_loss: 1.5327e-04 - val_acc: 0.0000e+00\n",
      "Epoch 262/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.5940e-04 - acc: 2.8547e-04 - val_loss: 1.5691e-04 - val_acc: 0.0000e+00\n",
      "Epoch 263/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6470e-04 - acc: 2.8547e-04 - val_loss: 1.4477e-04 - val_acc: 0.0000e+00\n",
      "Epoch 264/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.5752e-04 - acc: 2.8547e-04 - val_loss: 1.5500e-04 - val_acc: 0.0000e+00\n",
      "Epoch 265/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.5456e-04 - acc: 2.8547e-04 - val_loss: 1.3757e-04 - val_acc: 0.0000e+00\n",
      "Epoch 266/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6919e-04 - acc: 2.8547e-04 - val_loss: 1.5600e-04 - val_acc: 0.0000e+00\n",
      "Epoch 267/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6878e-04 - acc: 2.8547e-04 - val_loss: 1.2835e-04 - val_acc: 0.0000e+00\n",
      "Epoch 268/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.5625e-04 - acc: 2.8547e-04 - val_loss: 1.7439e-04 - val_acc: 0.0000e+00\n",
      "Epoch 269/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.4446e-04 - acc: 2.8547e-04 - val_loss: 2.2969e-04 - val_acc: 0.0000e+00\n",
      "Epoch 270/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.5551e-04 - acc: 2.8547e-04 - val_loss: 2.0707e-04 - val_acc: 0.0000e+00\n",
      "Epoch 271/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.7208e-04 - acc: 2.8547e-04 - val_loss: 3.3513e-04 - val_acc: 0.0000e+00\n",
      "Epoch 272/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.5297e-04 - acc: 2.8547e-04 - val_loss: 1.5732e-04 - val_acc: 0.0000e+00\n",
      "Epoch 273/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.4258e-04 - acc: 2.8547e-04 - val_loss: 1.3054e-04 - val_acc: 0.0000e+00\n",
      "Epoch 274/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.5710e-04 - acc: 2.8547e-04 - val_loss: 1.5448e-04 - val_acc: 0.0000e+00\n",
      "Epoch 275/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.4749e-04 - acc: 2.8547e-04 - val_loss: 1.7689e-04 - val_acc: 0.0000e+00\n",
      "Epoch 276/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.4208e-04 - acc: 2.8547e-04 - val_loss: 3.7970e-04 - val_acc: 0.0000e+00\n",
      "Epoch 277/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.5487e-04 - acc: 2.8547e-04 - val_loss: 2.2111e-04 - val_acc: 0.0000e+00\n",
      "Epoch 278/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.4953e-04 - acc: 2.8547e-04 - val_loss: 1.4199e-04 - val_acc: 0.0000e+00\n",
      "Epoch 279/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.4438e-04 - acc: 2.8547e-04 - val_loss: 3.5408e-04 - val_acc: 0.0000e+00\n",
      "Epoch 280/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6192e-04 - acc: 2.8547e-04 - val_loss: 1.4235e-04 - val_acc: 0.0000e+00\n",
      "Epoch 281/300\n",
      "3503/3503 [==============================] - ETA: 0s - loss: 2.6093e-04 - acc: 3.2552e-0 - 0s - loss: 2.6412e-04 - acc: 2.8547e-04 - val_loss: 1.4770e-04 - val_acc: 0.0000e+00\n",
      "Epoch 282/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6339e-04 - acc: 2.8547e-04 - val_loss: 4.8021e-04 - val_acc: 0.0000e+00\n",
      "Epoch 283/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.6024e-04 - acc: 2.8547e-04 - val_loss: 1.7789e-04 - val_acc: 0.0000e+00\n",
      "Epoch 284/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3503/3503 [==============================] - 0s - loss: 2.4710e-04 - acc: 2.8547e-04 - val_loss: 2.2273e-04 - val_acc: 0.0000e+00\n",
      "Epoch 285/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.2982e-04 - acc: 2.8547e-04 - val_loss: 1.9382e-04 - val_acc: 0.0000e+00\n",
      "Epoch 286/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.3637e-04 - acc: 2.8547e-04 - val_loss: 2.0150e-04 - val_acc: 0.0000e+00\n",
      "Epoch 287/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.3441e-04 - acc: 2.8547e-04 - val_loss: 1.7399e-04 - val_acc: 0.0000e+00\n",
      "Epoch 288/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.3749e-04 - acc: 2.8547e-04 - val_loss: 1.4822e-04 - val_acc: 0.0000e+00\n",
      "Epoch 289/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.3385e-04 - acc: 2.8547e-04 - val_loss: 1.5664e-04 - val_acc: 0.0000e+00\n",
      "Epoch 290/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.2924e-04 - acc: 2.8547e-04 - val_loss: 1.3712e-04 - val_acc: 0.0000e+00\n",
      "Epoch 291/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.2677e-04 - acc: 2.8547e-04 - val_loss: 3.7984e-04 - val_acc: 0.0000e+00\n",
      "Epoch 292/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.4235e-04 - acc: 2.8547e-04 - val_loss: 1.5546e-04 - val_acc: 0.0000e+00\n",
      "Epoch 293/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.4098e-04 - acc: 2.8547e-04 - val_loss: 4.3965e-04 - val_acc: 0.0000e+00\n",
      "Epoch 294/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.3532e-04 - acc: 2.8547e-04 - val_loss: 1.7669e-04 - val_acc: 0.0000e+00\n",
      "Epoch 295/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.3041e-04 - acc: 2.8547e-04 - val_loss: 4.1079e-04 - val_acc: 0.0000e+00\n",
      "Epoch 296/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.4385e-04 - acc: 2.8547e-04 - val_loss: 2.5650e-04 - val_acc: 0.0000e+00\n",
      "Epoch 297/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.2543e-04 - acc: 2.8547e-04 - val_loss: 1.5907e-04 - val_acc: 0.0000e+00\n",
      "Epoch 298/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.1426e-04 - acc: 2.8547e-04 - val_loss: 3.5133e-04 - val_acc: 0.0000e+00\n",
      "Epoch 299/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.3552e-04 - acc: 2.8547e-04 - val_loss: 1.7015e-04 - val_acc: 0.0000e+00\n",
      "Epoch 300/300\n",
      "3503/3503 [==============================] - 0s - loss: 2.2882e-04 - acc: 2.8547e-04 - val_loss: 1.1898e-04 - val_acc: 0.0000e+00\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x2616b358748>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(\n",
    "    X_train,\n",
    "    y_train,\n",
    "    batch_size=512,\n",
    "    epochs=300,\n",
    "    validation_split=0.1,\n",
    "    verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "To terminal\n",
    "tensorboard --logdir=/Users/kachunfung/python/projects/logs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Score: 0.00012 MSE (0.01 RMSE)\n",
      "Test Score: 0.00018 MSE (0.01 RMSE)\n"
     ]
    }
   ],
   "source": [
    "trainScore = model.evaluate(X_train, y_train, verbose=0)\n",
    "print('Train Score: %.5f MSE (%.2f RMSE)' % (trainScore[0], math.sqrt(trainScore[0])))\n",
    "\n",
    "testScore = model.evaluate(X_test, y_test, verbose=0)\n",
    "print('Test Score: %.5f MSE (%.2f RMSE)' % (testScore[0], math.sqrt(testScore[0])))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Test Result\n",
    "\n",
    "1. 100epochs, LSTM128 > LSTM128 > 16relu > 1linear\n",
    "Train Score: 0.00032 MSE (0.02 RMSE)\n",
    "Test Score: 0.00046 MSE (0.02 RMSE)\n",
    "\n",
    "2. 100epochs, LSTM80 > LSTM80 > 32relu > 1linear\n",
    "Train Score: 0.00039 MSE (0.02 RMSE)\n",
    "Test Score: 0.00258 MSE (0.05 RMSE)\n",
    "\n",
    "3. 100epochs, LSTM128 > LSTM128 > 64relu > 1linear\n",
    "Train Score: 0.00029 MSE (0.02 RMSE)\n",
    "Test Score: 0.00060 MSE (0.02 RMSE)\n",
    "\n",
    "4. 100epochs, LSTM128 > LSTM128 > 32relu > 1linear\n",
    "Train Score: 0.00027 MSE (0.02 RMSE)\n",
    "Test Score: 0.00077 MSE (0.03 RMSE)\n",
    "\n",
    "5. 300epochs, LSTM128 > LSTM128 > 32relu > 1linear\n",
    "Train Score: 0.00012 MSE (0.01 RMSE)\n",
    "Test Score: 0.00018 MSE (0.01 RMSE)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Prediction vs Real results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(433, 1)\n"
     ]
    }
   ],
   "source": [
    "# print(X_test[-1])\n",
    "diff=[]\n",
    "ratio=[]\n",
    "p = model.predict(X_test)\n",
    "print (p.shape)\n",
    "# for each data index in test data\n",
    "for u in range(len(y_test)):\n",
    "    # pr = prediction day u\n",
    "    pr = p[u][0]\n",
    "    # (y_test day u / pr) - 1\n",
    "    ratio.append((y_test[u]/pr)-1)\n",
    "    diff.append(abs(y_test[u]- pr))\n",
    "    # print(u, y_test[u], pr, (y_test[u]/pr)-1, abs(y_test[u]- pr))\n",
    "    # Last day prediction\n",
    "    # print(p[-1]) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2616b6fd0f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt2\n",
    "\n",
    "plt2.plot(p,color='red', label='Prediction')\n",
    "plt2.plot(y_test,color='blue', label='Actual')\n",
    "plt2.legend(loc='best')\n",
    "plt2.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Denormalizing result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "def denormalize(stock_name, normalized_value):\n",
    "    start = datetime.datetime(2000, 1, 1)\n",
    "    end = datetime.date.today()\n",
    "    df = web.DataReader(stock_name, \"yahoo\", start, end)\n",
    "    \n",
    "    df = df['Adj Close'][-432:].values.reshape(-1,1)\n",
    "    normalized_value = normalized_value.reshape(-1,1)\n",
    "    \n",
    "    #return df.shape, p.shape\n",
    "    min_max_scaler = preprocessing.MinMaxScaler()\n",
    "    a = min_max_scaler.fit_transform(df)\n",
    "    new = min_max_scaler.inverse_transform(normalized_value)\n",
    "    return new\n",
    "\n",
    "newp = denormalize(stock_name, p)\n",
    "newy_test = denormalize(stock_name, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAD8CAYAAACRkhiPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd8VUX6/9+TdhNuekgoSSCRDgFCUZrYsGADG6KLWJYf\n9hW7rruu36+7rmLXVXFZK7uI31VQLKiAgIo0A4QWkkAgIQ1IJwnpd35/zLklyQ25CUluEub9et3X\nmTtnzjlzbuB8zjPzzPMIKSUajUajOTPxcHcHNBqNRuM+tAhoNBrNGYwWAY1GozmD0SKg0Wg0ZzBa\nBDQajeYMRouARqPRnMFoEdBoNJozGC0CGo1GcwajRUCj0WjOYLzc3YHm6Nmzp4yJiXF3NzQajaZL\nsX379nwpZXhz7Tq9CMTExJCQkODubmg0Gk2XQgiR4Uq7ZoeDhBDRQoj1QogkIcQ+IcSCBvsfEUJI\nIURPh7o/CiEOCiFShBCXOdSPE0LsMfa9KYQQLbkpjUaj0bQtrswJ1AKPSCmHAxOB+4QQw0EJBHAp\ncMTa2Nh3EzACmA68I4TwNHYvAuYDg4zP9Da6D41Go9G0gmZFQEqZK6XcYZRLgf1ApLH7NeBxwDEU\n6UzgUylllZTyMHAQOEcI0QcIlFJukSp06RLgmra7FY1Go9G0lBbNCQghYoAxwFYhxEwgW0q5q8Go\nTiSwxeF7llFXY5Qb1reYmpoasrKyqKysbM3hGif4+voSFRWFt7e3u7ui0Wg6EJdFQAjhDywHHkQN\nET2FGgpqc4QQdwJ3AvTr16/R/qysLAICAoiJiUFPK5w+UkoKCgrIysoiNjbW3d3RaDQdiEvrBIQQ\n3igBWCqlXAEMAGKBXUKIdCAK2CGE6A1kA9EOh0cZddlGuWF9I6SUi6WU46WU48PDG3s4VVZWEhYW\npgWgjRBCEBYWpi0rjeYMxBXvIAG8D+yXUr4KIKXcI6WMkFLGSCljUEM7Y6WUR4GvgJuEECYhRCxq\nAniblDIXOCGEmGic81ZgZWs7rgWgbdG/p0ZzZuKKJTAFmAtcJIRIND5XNNVYSrkP+C+QBHwP3Cel\nrDN23wu8h5osTgO+O53OazQajTuprIQPPgCLxd09aT2ueAdtlFIKKeUoKWW88VnVoE2MlDLf4ftz\nUsoBUsohUsrvHOoTpJRxxr77ZRdOcOzp6Ul8fDxxcXHMmjWLkydPtvpcGzZs4KqrrgLgq6++4oUX\nXmiybXFxMe+8847te05ODjfccEOrr63RaFrPSy/BvHnwf//n7p60Hh07qJX4+fmRmJjI3r178fHx\n4d133623X0qJpRWvBzNmzODJJ59scn9DEejbty+ff/55i6+j0WhOn/JytT347Cfw7LNNN8zL65gO\ntQItAm3A1KlTOXjwIOnp6QwZMoRbb72VuLg4MjMzWb16NZMmTWLs2LHMmjWLsrIyAL7//nuGDh3K\n2LFjWbFihe1cH330Effffz8Ax44d49prr2X06NGMHj2aTZs28eSTT5KWlkZ8fDyPPfYY6enpxMXF\nAWrC/I477mDkyJGMGTOG9evX28553XXXMX36dAYNGsTjjz/ewb+QRtM9CQ5W27zkfHjmGdi8uXGj\n11+HiAhYvLhjO+cinT52ULM8+CAkJrbtOePj1R/OBWpra/nuu++YPl0tfj5w4AAff/wxEydOJD8/\nn7/97W+sXbsWs9nMwoULefXVV3n88ceZP38+69atY+DAgcyePdvpuR944AHOP/98vvjiC+rq6igr\nK+OFF15g7969JBr3nJ6ebmv/9ttvI4Rgz549JCcnc+mll5KamgpAYmIiO3fuxGQyMWTIEP7whz8Q\nHR3t7LIajcZFjHc6cumjCt98A5MmAXD8SCX3PeDJG9+/SV9QIvH734NX53rsakuglVRUVBAfH8/4\n8ePp168f8+bNA6B///5MnDgRgC1btpCUlMSUKVOIj4/n448/JiMjg+TkZGJjYxk0aBBCCG655Ran\n11i3bh333HMPoOYggoKCTtmnjRs32s41dOhQ+vfvbxOBadOmERQUhK+vL8OHDycjw6XYUhqN5hQU\nF6vt58ziub5vg2F9k5vLmmEP8PlKb66vWgr33ANHj8LBg+7rbBN0LklqDS6+sbc11jmBhpjNZltZ\nSskll1zCsmXL6rVxdlx7YzKZbGVPT09qa2s7vA8aTXfDKgIA75XfzJ+2PQD5+fDUUxSe9AdgC5PY\nNiGYcxYtgqQkGDrUTb11jrYE2pGJEyfy66+/ctBQ//LyclJTUxk6dCjp6emkpaUBNBIJK9OmTWPR\nokUA1NXVUVJSQkBAAKWlpU7bT506laVLlwKQmprKkSNHGDJkSFvflkajMSguhnE+e3h1zBLSS0I4\nUtcXXnwRPvmEnLOmAtA7vJYnPxisDkhKcmNvnaNFoB0JDw/no48+4uabb2bUqFFMmjSJ5ORkfH19\n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\nELMkYIwxIfZ/4zHVjLbzogsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2616b6a0978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt2\n",
    "\n",
    "plt2.plot(newp, color='red', label='Prediction')\n",
    "plt2.plot(newy_test,color='blue', label='Actual')\n",
    "plt2.legend(loc='best')\n",
    "plt2.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Save for consistency"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "ename": "ImportError",
     "evalue": "`save_model` requires h5py.",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mImportError\u001b[0m                               Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-41-49fe5d9f3b50>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msave\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'LSTM_Stock_prediction-20170418.h5'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mC:\\Users\\user\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\keras\\engine\\topology.py\u001b[0m in \u001b[0;36msave\u001b[1;34m(self, filepath, overwrite, include_optimizer)\u001b[0m\n\u001b[0;32m   2432\u001b[0m         \"\"\"\n\u001b[0;32m   2433\u001b[0m         \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodels\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0msave_model\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2434\u001b[1;33m         \u001b[0msave_model\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfilepath\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moverwrite\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minclude_optimizer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   2435\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2436\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0msave_weights\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfilepath\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moverwrite\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mC:\\Users\\user\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\keras\\models.py\u001b[0m in \u001b[0;36msave_model\u001b[1;34m(model, filepath, overwrite, include_optimizer)\u001b[0m\n\u001b[0;32m     53\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     54\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mh5py\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 55\u001b[1;33m         \u001b[1;32mraise\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'`save_model` requires h5py.'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     56\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     57\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mget_json_type\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mImportError\u001b[0m: `save_model` requires h5py."
     ]
    }
   ],
   "source": [
    "model.save('LSTM_Stock_prediction-20170418.h5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "433\n"
     ]
    }
   ],
   "source": [
    "print (len(p)) # Notice that it is 433 business day."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
